home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Internet Info 1994 March
/
Internet Info CD-ROM (Walnut Creek) (March 1994).iso
/
networking
/
mail
/
mh
/
contrib
/
jpeek
/
nexts
< prev
next >
Wrap
Text File
|
1992-08-08
|
3KB
|
93 lines
#! /bin/sh
# ^^^ THIS SHELL NEEDS BUILT-IN test COMMAND FOR SPEED
# $Header: /home/jerry/.bin/RCS/nexts,v 1.3 92/08/09 23:26:33 jerry mh_contrib $
### nexts - show next message in an MH sequence
### Usage: nexts [sequence-name] [+folder]
##
## IF YOU TYPE AN MH SEQUENCE NAME ON ITS COMMAND LINE, AND THE CURRENT
## MESSAGE IS BEFORE THE FIRST MESSAGE IN THAT SEQUENCE, nexts SHOWS
## THE FIRST MESSAGE IN THAT SEQUENCE. OTHERWISE, IT SHOWS THE
## NEXT MESSAGE IN THAT SEQUENCE. IT USES THE MH show PROGRAM.
##
## THE SEQUENCE NAME YOU'RE VIEWING IS STORED IN A FILE NAMED
## .nexts.seqname IN THE MH FOLDER DIRECTORY ITSELF. THIS MEANS
## THAT YOU CAN HAVE LOTS OF little FILES HANGING AROUND;
## ALSO, IF SOMEONE ELSE IS LOGGED ON TO YOUR ACCOUNT AND THEY
## CHANGE THE SEQUENCE NAME, THEIR CHANGE WILL AFFECT YOU.
## STILL, THIS IS A GOOD COMPROMISE FOR PEOPLE USING WINDOWS, ETC.
##
## MH 6.7.2 CAN DO THE SAME THING WITHOUT THIS PROGRAM. EXAMPLE:
## show unseen:next
#
# NOTE TO HACKERS: TABSTOPS ARE SET AT 4 IN THIS CODE
#
# USE AT YOUR OWN RISK. SEEMS TO WORK, BUT IT'S YOUR RESPONSIBILITY!
# PLEASE TELL ME ABOUT BUGS AND FIXES: Jerry Peek, jerry@ora.com
mh=/usr/local/mh # WHERE MH COMMANDS LIVE
for arg
do
case "$arg" in
[+@]*)
case "$fol" in
"") fol="$arg" ;;
*) echo "`basename $0`: only one folder at a time!" 1>&2; exit 1;;
esac
;;
*) # NOT A FOLDER, SO IT MUST BE A SEQUENCE NAME:
case "$seq" in
"") seq="$arg" ;;
*) echo "`basename $0`: '$arg'? Only one sequence!" 1>&2; exit 1;;
esac
;;
esac
done
# IF NO SEQUENCE GIVEN, READ DEFAULT:
seqfile="`$mh/mhpath $fol`/.nexts.seqname" || exit 1
if [ -z "$seq" -a -r "$seqfile" ]; then
# USE SEQUENCE NAME STORED IN FILE
seq="`/bin/cat $seqfile`" || exit 1
elif [ -n "$seq" ]; then
# STORE SEQUENCE NAME IN FILE (MAYBE CREATING IT TOO):
echo "$seq" >$seqfile || exit 1
else
echo "`basename $0` quitting: I'm confused." 1>&2
exit 1
fi
# PUT CURRENT MESSAGE NUMBER IN $3; IF NONE, GETS THE STRING "(null)"
set x `$mh/mark -list -seq cur $fol` || exit 1
curmsg="$3"
# GET MESSAGE NUMBERS TO DEAL WITH INTO $1, $2, ETC.; IF NONE, EXIT:
set x `$mh/scan -format '%(msg)' $seq` || exit 1
test -z "$2" && exit 1 # IF NO MESSAGES IN LIST (IF $2 IS EMPTY), EXIT
case "$curmsg" in
"(null)") $mh/show $2; exit ;; # NO CURRENT MESSAGE; SHOW FIRST ONE
[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9])
# THERE'S A CURRENT MESSAGE; FIND NEXT ONE IN SEQUENCE:
shift
for msg
do
if [ $msg -gt $curmsg ]
then
show $msg
exit 0 # BREAK LOOP AND QUIT...
fi
done
# IF GET HERE, LOOP DIDN'T FIND A NEXT MESSAGE. QUIT:
echo "`basename $0`: no next message in '$seq' sequence in ${fol-current folder}" 1>&2
exit 0
;;
*) echo "`basename $0': current message is '$curmsg'!?!" 1>&2
exit 1
;;
esac